import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';
import router from './router/router'
import store from './store/store'
import global from './global'
import VideoPlayer from 'vue-video-player'
import 'vue-video-player/src/custom-theme.css'
import 'video.js/dist/video-js.css'
import  * as  echarts from 'echarts'
Vue.prototype.$echarts = echarts;

Vue.use(VideoPlayer);

Vue.use(ElementUI);
Vue.use(global);

Vue.config.productionTip = false;

const axios = require('axios');
// 全局注册，之后可在其他组件中通过 this.$axios 发送数据
Vue.prototype.$axios = axios
// 设置反向代理，前端请求默认发送到 http://localhost:8888/api
//axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8'

axios.defaults.baseURL = 'http://localhost:8088/api'

const originalPush = router.push
router.push = function push(location) {
    return originalPush.call(this, location).catch(err => err)
}

router.beforeEach((to, from, next) => {
    const loginuser = store.state.user
    const role = store.state.user.role
    // 判断路由是否设置相应校验用户权限
    if (to.meta.requireAuth) {
        if (loginuser != null) {
            // 没有登录，显示登录组件
            // if (from.name === "Home") {
            //     //此时，是在页面没有加载，直接在地址栏输入链接，进入需要登录验证的页面
            //     next("/nohaveRole");
            //     return;
            // }
            // if (to.meta.roles.includes("student")) {
            //     store.dispatch("setShowLogin", true);
            //     return;
            // }
            if (to.meta.roles.includes(role)) { //权限
                next()	//放行
            } else {
                next("/empty")
            }
        } else
            next("/empty")
    }
    next();
});

// router.beforeEach((to, from, next) => {
//     if (to.path === '/login') { // 如果跳转登录页面,则移除token
//         store.commit("delToken")
//         //localStorage.removeItem('token')
//         next()
//     } else {
//         if (to.meta.requireAuth) {
//             console.log("需要登录")
//             const tokenList = localStorage.getItem('token');
//             const token = (tokenList || '').split('"');
//             if (token[1] === undefined || token[1] === '') { //token不存在页跳转到登录页面
//                 router.replace('/login')
//             } else {
//                 //检验token是否正确
//                 axios({
//                     url: 'http://localhost:8087/api/checkToken', //在controller中写一个接口用来token校验
//                     method: 'post',
//                     //将token信息保存在header里
//                     headers: {
//                         Authorization: token[1]
//                     }
//                 }).then((response) => {
//                     console.log(response.status)
//                     next();
//                 }).catch((error) => {
//                         if (error.response.status === 401) {
//                             router.replace('/login')
//                         }
//                         // if (error.data.status === 401) {
//                         //     router.replace('/login') // 如果token失效,返回到登录页面
//                         // }
//                     }
//                 );
//             }
//         } else {
//             console.log("不需要登录")
//             next();
//         }
//     }
// })

// router.beforeEach((to, from, next) => {
//     if (to.path === '/login') { // 如果跳转登录页面,则移除token
//         store.commit("delToken")
//         //localStorage.removeItem('token')
//         next()
//     } else {
//         const tokenList = localStorage.getItem('token');
//         const token = (tokenList || '').split('"');
//         if (token[1] === null || token[1] === '') { //token不存在页跳转到登录页面
//             router.replace('/login')
//         } else {
//             //检验token是否正确
//             axios({
//                 url: 'http://localhost:8088/api/checkToken', //在controller中写一个接口用来token校验
//                 method: 'post',
//                 //将token信息保存在header里
//                 headers: {
//                     Authorization: token[1]
//                 }
//             }).then((response) => {
//                 console.log(response.status)
//                 if (to.meta.roles.length > 0) {
//                     const roleList = localStorage.getItem("role");
//                     const role = (roleList || '').split('"');
//                     console.log(role[1])
//                     if (!to.meta.roles.includes(role[1])) {
//                         console.log("角色权限验证失败")
//                         return
//                     }
//                 }
//                 next();
//             }).catch((error) => {
//                     if (error.response.status === 401) {
//                         router.push('/login')
//                     }
//                     // if (error.data.status === 401) {
//                     //     router.replace('/login') // 如果token失效,返回到登录页面
//                     // }
//                 }
//             );
//         }
//     }
// })

new Vue({
    el: '#app',
    router,
    store,
    render: h => h(App)
});
